- 
                Notifications
    You must be signed in to change notification settings 
- Fork 46
[do not merge] Test GPUArrays sort #647
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
          
     Open
      
      
            christiangnrd
  wants to merge
  3
  commits into
  main
  
    
      
        
          
  
    
      Choose a base branch
      
     
    
      
        
      
      
        
          
          
        
        
          
            
              
              
              
  
           
        
        
          
            
              
              
           
        
       
     
  
        
          
            
          
            
          
        
       
    
      
from
sort
  
      
      
   
  
    
  
  
  
 
  
      
    base: main
Could not load branches
            
              
  
    Branch not found: {{ refName }}
  
            
                
      Loading
              
            Could not load tags
            
            
              Nothing to show
            
              
  
            
                
      Loading
              
            Are you sure you want to change the base?
            Some commits from the old base branch may be removed from the timeline,
            and old review comments may become outdated.
          
          
                
     Open
            
            
          Conversation
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
    | Your PR requires formatting changes to meet the project's style guidelines. Click here to view the suggested changes.diff --git a/lib/mtl/capture.jl b/lib/mtl/capture.jl
index c2c1a77a..c101c5b7 100644
--- a/lib/mtl/capture.jl
+++ b/lib/mtl/capture.jl
@@ -59,7 +59,8 @@ function MTLCaptureDescriptor()
 end
 
 # TODO: Add capture state
-function MTLCaptureDescriptor(obj::Union{MTLDevice,MTLCommandQueue,MTLCaptureScope},
+function MTLCaptureDescriptor(
+        obj::Union{MTLDevice, MTLCommandQueue, MTLCaptureScope},
                               destination::MTLCaptureDestination;
                               folder::String=nothing)
     desc = MTLCaptureDescriptor()
@@ -110,7 +111,8 @@ end
 
 Start GPU frame capture using the default capture object and specifying capture descriptor parameters directly.
 """
-function startCapture(obj::Union{MTLDevice,MTLCommandQueue,MTLCaptureScope},
+function startCapture(
+        obj::Union{MTLDevice, MTLCommandQueue, MTLCaptureScope},
                       destination::MTLCaptureDestination=MTLCaptureDestinationGPUTraceDocument;
                       folder::String=nothing)
     if destination == MTLCaptureDestinationGPUTraceDocument && folder === nothing
diff --git a/perf/array.jl b/perf/array.jl
index bc82d4bd..82db81ff 100644
--- a/perf/array.jl
+++ b/perf/array.jl
@@ -151,18 +151,18 @@ end
 let group = addgroup!(group, "sorting")
     let group = addgroup!(group, "Float32")
         group["1d"] = @benchmarkable Metal.@sync sort($gpu_vec)
-        group["by=sin"] = @benchmarkable Metal.@sync sort($gpu_vec; by=sin)
-    #     group["dims=1"] = @benchmarkable Metal.@sync sort($gpu_mat; dims=1)
-    #     group["dims=2"] = @benchmarkable Metal.@sync sort($gpu_mat; dims=2)
-    #     group["dims=1L"] = @benchmarkable Metal.@sync sort($gpu_mat_long; dims=1)
-    #     group["dims=2L"] = @benchmarkable Metal.@sync sort($gpu_mat_long; dims=2)
+        group["by=sin"] = @benchmarkable Metal.@sync sort($gpu_vec; by = sin)
+        #     group["dims=1"] = @benchmarkable Metal.@sync sort($gpu_mat; dims=1)
+        #     group["dims=2"] = @benchmarkable Metal.@sync sort($gpu_mat; dims=2)
+        #     group["dims=1L"] = @benchmarkable Metal.@sync sort($gpu_mat_long; dims=1)
+        #     group["dims=2L"] = @benchmarkable Metal.@sync sort($gpu_mat_long; dims=2)
     end
     let group = addgroup!(group, "Int64")
         group["1d"] = @benchmarkable Metal.@sync sort($gpu_vec_ints)
-    #     group["dims=1"] = @benchmarkable Metal.@sync sort($gpu_mat_ints; dims=1)
-    #     group["dims=2"] = @benchmarkable Metal.@sync sort($gpu_mat_ints; dims=2)
-    #     group["dims=1L"] = @benchmarkable Metal.@sync sort($gpu_mat_long_ints; dims=1)
-    #     group["dims=2L"] = @benchmarkable Metal.@sync sort($gpu_mat_long_ints; dims=2)
+        #     group["dims=1"] = @benchmarkable Metal.@sync sort($gpu_mat_ints; dims=1)
+        #     group["dims=2"] = @benchmarkable Metal.@sync sort($gpu_mat_ints; dims=2)
+        #     group["dims=1L"] = @benchmarkable Metal.@sync sort($gpu_mat_long_ints; dims=1)
+        #     group["dims=2L"] = @benchmarkable Metal.@sync sort($gpu_mat_long_ints; dims=2)
     end
 end
 
diff --git a/perf/benchmark_graphs_nb.jl b/perf/benchmark_graphs_nb.jl
index ffecab59..0b500e53 100644
--- a/perf/benchmark_graphs_nb.jl
+++ b/perf/benchmark_graphs_nb.jl
@@ -18,142 +18,142 @@ end
 
 # ╔═╡ 7259dbee-52ac-11f0-3192-dd97323b274a
 begin
-	using DataFrames
-	using JSON
-	using StatsPlots
-	using PlutoUI
+    using DataFrames
+    using JSON
+    using StatsPlots
+    using PlutoUI
 end
 
 # ╔═╡ 09a99cb6-5e99-43ee-8b27-a8f84cb9770f
 begin
-	getbench(dict, benchstring::AbstractString) = getbench(dict, split(benchstring, "/"))
-	function getbench(dict, benches::AbstractVector)
-		_dict = _getbench(dict)
-		for b in benches
-			_dict = _getbench(_dict, b)
-		end
-		return _dict["time"]
-	end
-	function _getbench(dict)
-		dict[2][1][2]["data"]["array"][2]
-	end
-	function _getbench(dict, bench)
-		dict["data"][bench][2]
-	end
+    getbench(dict, benchstring::AbstractString) = getbench(dict, split(benchstring, "/"))
+    function getbench(dict, benches::AbstractVector)
+        _dict = _getbench(dict)
+        for b in benches
+            _dict = _getbench(_dict, b)
+        end
+        return _dict["time"]
+    end
+    function _getbench(dict)
+        return dict[2][1][2]["data"]["array"][2]
+    end
+    function _getbench(dict, bench)
+        return dict["data"][bench][2]
+    end
 end
 
 # ╔═╡ 6c52f13d-11cb-47b2-812e-6316ab24c408
-begin 
-	benches = [
-			   # "accumulate/Int64/1d",
-			   # "accumulate/Int64/dims=1",
-			   # "accumulate/Int64/dims=2",
-			   "accumulate/Int64/dims=1L",
-			   "accumulate/Int64/dims=2L",
-			   # "accumulate/Float32/1d",
-			   # "accumulate/Float32/dims=1",
-			   # "accumulate/Float32/dims=2",
-			   "accumulate/Float32/dims=1L",
-			   "accumulate/Float32/dims=2L",
-			   
-			   # "reductions/reduce/Int64/1d",
-			   # "reductions/reduce/Int64/dims=1",
-			   # "reductions/reduce/Int64/dims=2",
-			   "reductions/reduce/Int64/dims=1L",
-			   "reductions/reduce/Int64/dims=2L",
-			   # "reductions/reduce/Float32/1d",
-			   # "reductions/reduce/Float32/dims=1",
-			   # "reductions/reduce/Float32/dims=2",
-			   "reductions/reduce/Float32/dims=1L",
-			   "reductions/reduce/Float32/dims=2L",
-	
-			   # "reductions/mapreduce/Int64/1d",
-			   # "reductions/mapreduce/Int64/dims=1",
-			   # "reductions/mapreduce/Int64/dims=2",
-			   "reductions/mapreduce/Int64/dims=1L",
-			   "reductions/mapreduce/Int64/dims=2L",
-			   # "reductions/mapreduce/Float32/1d",
-			   # "reductions/mapreduce/Float32/dims=1",
-			   # "reductions/mapreduce/Float32/dims=2",
-			   "reductions/mapreduce/Float32/dims=1L",
-			   "reductions/mapreduce/Float32/dims=2L",
-			  ]
-
-	configs = Dict()
-	configs["M2 Max"] = [
-			   # ("M2 Max 1Curr", "benchmarkresultsmtlmain.json"),
-			   ("M2 Max 2CurrCUOpt","benchmarkresultsmtlbigkern.json"),
-			   # ("M2 Max 3Curr712","benchmarkresultsmtlcuopt712.json"),
-			   ("M2 Max 3NoGrain","benchmarkresultsmtlnograin.json"),
-			   ("M2 Max 4AK","benchmarkresultsmtlak.json"),
-			  ]
-
-	configs["3060"] = [
-			   ("3060 1Curr","benchmarkresultscudamain.json"),
-			   ("3060 2AK","benchmarkresultscudaak.json"),
-			   ("3060 3AKThresh","benchmarkresultscudaakthresh.json"),
-			   ("3060 4AK512","benchmarkresultscudaak512.json"),
-			   ("3060 5AK1024","benchmarkresultscudaak1024.json"),
-			  ]
-	configs["3090"] = [
-			   ("3090 1Curr","benchmarkresults3090main.json"),
-			   ("3090 2AK","benchmarkresults3090ak.json"),
-			   ("3090 3AKHeur ","benchmarkresults3090heur.json"),
-			  ]
-	allconfs = vcat(values(configs)...)
+begin
+    benches = [
+        # "accumulate/Int64/1d",
+        # "accumulate/Int64/dims=1",
+        # "accumulate/Int64/dims=2",
+        "accumulate/Int64/dims=1L",
+        "accumulate/Int64/dims=2L",
+        # "accumulate/Float32/1d",
+        # "accumulate/Float32/dims=1",
+        # "accumulate/Float32/dims=2",
+        "accumulate/Float32/dims=1L",
+        "accumulate/Float32/dims=2L",
+
+        # "reductions/reduce/Int64/1d",
+        # "reductions/reduce/Int64/dims=1",
+        # "reductions/reduce/Int64/dims=2",
+        "reductions/reduce/Int64/dims=1L",
+        "reductions/reduce/Int64/dims=2L",
+        # "reductions/reduce/Float32/1d",
+        # "reductions/reduce/Float32/dims=1",
+        # "reductions/reduce/Float32/dims=2",
+        "reductions/reduce/Float32/dims=1L",
+        "reductions/reduce/Float32/dims=2L",
+
+        # "reductions/mapreduce/Int64/1d",
+        # "reductions/mapreduce/Int64/dims=1",
+        # "reductions/mapreduce/Int64/dims=2",
+        "reductions/mapreduce/Int64/dims=1L",
+        "reductions/mapreduce/Int64/dims=2L",
+        # "reductions/mapreduce/Float32/1d",
+        # "reductions/mapreduce/Float32/dims=1",
+        # "reductions/mapreduce/Float32/dims=2",
+        "reductions/mapreduce/Float32/dims=1L",
+        "reductions/mapreduce/Float32/dims=2L",
+    ]
+
+    configs = Dict()
+    configs["M2 Max"] = [
+        # ("M2 Max 1Curr", "benchmarkresultsmtlmain.json"),
+        ("M2 Max 2CurrCUOpt", "benchmarkresultsmtlbigkern.json"),
+        # ("M2 Max 3Curr712","benchmarkresultsmtlcuopt712.json"),
+        ("M2 Max 3NoGrain", "benchmarkresultsmtlnograin.json"),
+        ("M2 Max 4AK", "benchmarkresultsmtlak.json"),
+    ]
+
+    configs["3060"] = [
+        ("3060 1Curr", "benchmarkresultscudamain.json"),
+        ("3060 2AK", "benchmarkresultscudaak.json"),
+        ("3060 3AKThresh", "benchmarkresultscudaakthresh.json"),
+        ("3060 4AK512", "benchmarkresultscudaak512.json"),
+        ("3060 5AK1024", "benchmarkresultscudaak1024.json"),
+    ]
+    configs["3090"] = [
+        ("3090 1Curr", "benchmarkresults3090main.json"),
+        ("3090 2AK", "benchmarkresults3090ak.json"),
+        ("3090 3AKHeur ", "benchmarkresults3090heur.json"),
+    ]
+    allconfs = vcat(values(configs)...)
 end
 
 # ╔═╡ 1b9a4018-d995-4319-b8ff-1504dbc7ae7d
 begin
-	benchresults = Dict()
-	for (conf, fname) in allconfs
-		benchresults[conf] = JSON.parsefile(fname)
-	end
+    benchresults = Dict()
+    for (conf, fname) in allconfs
+        benchresults[conf] = JSON.parsefile(fname)
+    end
 end
 
 # ╔═╡ 97d12cad-123b-46a2-bdc0-aeae60d9cadd
 begin
-	organizedresults = Dict()
-	for bench in benches
-		_res = Dict()
-		for (conf,_) in allconfs
-			_res[conf] = getbench(benchresults[conf], bench)
-		end
-		organizedresults[bench] = _res
-	end
-	organizedresults
+    organizedresults = Dict()
+    for bench in benches
+        _res = Dict()
+        for (conf, _) in allconfs
+            _res[conf] = getbench(benchresults[conf], bench)
+        end
+        organizedresults[bench] = _res
+    end
+    organizedresults
 end
 
 # ╔═╡ b619106c-b4ca-4f41-a4cd-c0bf46982631
 begin
-	res_df = let
-		_bench = String[]
-		_config = String[]
-		_time = Float64[]
-		for bench in benches, (conf,_) in allconfs
-			push!(_bench, bench)
-			push!(_config, conf)
-			push!(_time, organizedresults[bench][conf])
-		end
-		DataFrame(Bench=_bench, Test=_config, Time=_time)
-	end
-	res_df
-	md"The unfiltered dataframe"
+    res_df = let
+        _bench = String[]
+        _config = String[]
+        _time = Float64[]
+        for bench in benches, (conf, _) in allconfs
+            push!(_bench, bench)
+            push!(_config, conf)
+            push!(_time, organizedresults[bench][conf])
+        end
+        DataFrame(Bench = _bench, Test = _config, Time = _time)
+    end
+    res_df
+    md"The unfiltered dataframe"
 end
 
 # ╔═╡ 71f098a8-49bb-4b31-8c1a-e75a80735d4a
 begin
-allconfkeys = sort(collect(keys(configs)))
-defconf = "3090" in allconfkeys ? "3090" : first(allconfkeys)
-md"
+    allconfkeys = sort(collect(keys(configs)))
+    defconf = "3090" in allconfkeys ? "3090" : first(allconfkeys)
+    md"
 GPU: $(@bind backends MultiCheckBox(allconfkeys;default=[defconf]))
 "
 end
 
 # ╔═╡ 9b41f92f-cff1-4770-afe1-044abd228484
 begin
-benchmark_opts = filter(x->any(startswith.(Ref(x), backends)), first.(allconfs))
-md"
+    benchmark_opts = filter(x -> any(startswith.(Ref(x), backends)), first.(allconfs))
+    md"
 Benchmarks: $(@bind benchmarks MultiCheckBox(benchmark_opts; default=benchmark_opts))
 "
 end
@@ -161,37 +161,37 @@ end
 # ╔═╡ 33a148af-7991-45eb-8031-59c70ead8ec0
 # The filtered dataframe
 begin
-	plot_df = filter(x->in(x.Test, benchmarks), res_df)
-	md"The filtered dataframe"
+    plot_df = filter(x -> in(x.Test, benchmarks), res_df)
+    md"The filtered dataframe"
 end
 
 # ╔═╡ e099b6dd-f7b6-4201-bd29-275c30f35d1c
-function plot_benches(df, title; ylabel="Time (ns)")
-	df = filter(x->startswith(x.Bench, title), df)
-	tlabs = [b[length(title)+2:end] for b in unique(df.Bench)]
-	if startswith(title, "reductions/")
-		title = title[length("reductions/")+1:end]
-	end
-	groupedbar(df.Time; group = df.Test, bar_position = :dodge, ylabel, title, #=legendtitle="Test",=# xticks=(1:length(tlabs),tlabs), xtickfontsize=6)
+function plot_benches(df, title; ylabel = "Time (ns)")
+    df = filter(x -> startswith(x.Bench, title), df)
+    tlabs = [b[(length(title) + 2):end] for b in unique(df.Bench)]
+    if startswith(title, "reductions/")
+        title = title[(length("reductions/") + 1):end]
+    end
+    return groupedbar(df.Time; group = df.Test, bar_position = :dodge, ylabel, title, #=legendtitle="Test",=# xticks = (1:length(tlabs), tlabs), xtickfontsize = 6)
 end
 
 # ╔═╡ 090186dd-41f2-4b64-84bf-908537b6c186
-plot(plot_benches(plot_df, "accumulate/Int64"),plot_benches(plot_df, "accumulate/Float32"),layout=2;ylabel="")
+plot(plot_benches(plot_df, "accumulate/Int64"), plot_benches(plot_df, "accumulate/Float32"), layout = 2; ylabel = "")
 
 # ╔═╡ 5ac936e9-0d75-43f6-97fb-6824512afe12
-plot(plot_benches(plot_df, "reductions/reduce/Int64"),plot_benches(plot_df, "reductions/reduce/Float32";ylabel=""),layout=2)
+plot(plot_benches(plot_df, "reductions/reduce/Int64"), plot_benches(plot_df, "reductions/reduce/Float32"; ylabel = ""), layout = 2)
 
 # ╔═╡ 9d49a3e3-bdf5-46f0-a29c-d81d88066bb4
-plot(plot_benches(plot_df, "reductions/mapreduce/Int64"),plot_benches(plot_df, "reductions/mapreduce/Float32";ylabel=""),layout=2)
+plot(plot_benches(plot_df, "reductions/mapreduce/Int64"), plot_benches(plot_df, "reductions/mapreduce/Float32"; ylabel = ""), layout = 2)
 
 # ╔═╡ 5f0396e0-b0a5-4a68-80ad-b01347f29dc3
 length("reductions/reduce")
 
 # ╔═╡ ec61beef-b93c-4ffe-a216-1f78c75312b8
-"reductions/reduce/Float32/dims=1"[length("reductions/reduce")+2:end]
+"reductions/reduce/Float32/dims=1"[(length("reductions/reduce") + 2):end]
 
 # ╔═╡ 4bf14eb2-251c-4c5f-9523-bbd6a1db123c
-split("accumulate/Int64/1d","/";limit=1)
+split("accumulate/Int64/1d", "/"; limit = 1)
 
 # ╔═╡ 00000000-0000-0000-0000-000000000001
 PLUTO_PROJECT_TOML_CONTENTS = """
diff --git a/perf/runbenchmarks.jl b/perf/runbenchmarks.jl
index 2b6773fc..e73e8a82 100644
--- a/perf/runbenchmarks.jl
+++ b/perf/runbenchmarks.jl
@@ -1,7 +1,7 @@
 # benchmark suite execution and codespeed submission
 
 using Pkg
-Pkg.add(url="https://github.com/christiangnrd/GPUArrays.jl", rev="sort")
+Pkg.add(url = "https://github.com/christiangnrd/GPUArrays.jl", rev = "sort")
 
 using Metal
 
diff --git a/test/runtests.jl b/test/runtests.jl
index 21d6b5d1..e41c0eab 100644
--- a/test/runtests.jl
+++ b/test/runtests.jl
@@ -1,5 +1,5 @@
 using Pkg
-Pkg.add(url="https://github.com/christiangnrd/GPUArrays.jl", rev="sort")
+Pkg.add(url = "https://github.com/christiangnrd/GPUArrays.jl", rev = "sort")
 
 using Distributed
 using Dates | 
886f712    to
    3d564bc      
    Compare
  
    There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Metal Benchmarks
| Benchmark suite | Current: 1b6d4a8 | Previous: 9b8c604 | Ratio | 
|---|---|---|---|
| latency/precompile | 9966923250ns | 9950383250ns | 1.00 | 
| latency/ttfp | 4045766750ns | 4042521958ns | 1.00 | 
| latency/import | 1309155167ns | 1300517645.5ns | 1.01 | 
| integration/metaldevrt | 914958ns | 902833ns | 1.01 | 
| integration/byval/slices=1 | 1674625ns | 1627146ns | 1.03 | 
| integration/byval/slices=3 | 20244666ns | 19739042ns | 1.03 | 
| integration/byval/reference | 1626875ns | 1631792ns | 1.00 | 
| integration/byval/slices=2 | 2808542ns | 2799250ns | 1.00 | 
| kernel/indexing | 517125ns | 502291ns | 1.03 | 
| kernel/indexing_checked | 522917ns | 524417ns | 1.00 | 
| kernel/launch | 9542ns | 8479.166666666668ns | 1.13 | 
| array/construct | 6791ns | 5958ns | 1.14 | 
| array/broadcast | 525666ns | 544166ns | 0.97 | 
| array/random/randn/Float32 | 910083ns | 901875ns | 1.01 | 
| array/random/randn!/Float32 | 595834ns | 602875ns | 0.99 | 
| array/random/rand!/Int64 | 554584ns | 559458ns | 0.99 | 
| array/random/rand!/Float32 | 551708ns | 549500ns | 1.00 | 
| array/random/rand/Int64 | 878416ns | 939708ns | 0.93 | 
| array/random/rand/Float32 | 849084ns | 838375ns | 1.01 | 
| array/accumulate/Int64/1d | 1407333.5ns | 1396042ns | 1.01 | 
| array/accumulate/Int64/dims=1 | 1982625ns | 1920958ns | 1.03 | 
| array/accumulate/Int64/dims=2 | 2318750ns | 2316166.5ns | 1.00 | 
| array/accumulate/Int64/dims=1L | 12575084ns | 12541000ns | 1.00 | 
| array/accumulate/Int64/dims=2L | 10169666ns | 10017708.5ns | 1.02 | 
| array/accumulate/Float32/1d | 1167291ns | 1188292ns | 0.98 | 
| array/accumulate/Float32/dims=1 | 1717750ns | 1700584ns | 1.01 | 
| array/accumulate/Float32/dims=2 | 2159854ns | 2092542ns | 1.03 | 
| array/accumulate/Float32/dims=1L | 10589749.5ns | 10561084ns | 1.00 | 
| array/accumulate/Float32/dims=2L | 7700812.5ns | 7616166ns | 1.01 | 
| array/reductions/reduce/Int64/1d | 1315666ns | 1284584ns | 1.02 | 
| array/reductions/reduce/Int64/dims=1 | 1166667ns | 1156208ns | 1.01 | 
| array/reductions/reduce/Int64/dims=2 | 1326958ns | 1306625ns | 1.02 | 
| array/reductions/reduce/Int64/dims=1L | 2206000ns | 2170417ns | 1.02 | 
| array/reductions/reduce/Int64/dims=2L | 3611750ns | 3596875ns | 1.00 | 
| array/reductions/reduce/Float32/1d | 819125ns | 831770.5ns | 0.98 | 
| array/reductions/reduce/Float32/dims=1 | 879625ns | 842667ns | 1.04 | 
| array/reductions/reduce/Float32/dims=2 | 763292ns | 754645.5ns | 1.01 | 
| array/reductions/reduce/Float32/dims=1L | 1885083ns | 1861417ns | 1.01 | 
| array/reductions/reduce/Float32/dims=2L | 1926917ns | 1892375ns | 1.02 | 
| array/reductions/mapreduce/Int64/1d | 1327750ns | 1287479ns | 1.03 | 
| array/reductions/mapreduce/Int64/dims=1 | 1180417ns | 1167833ns | 1.01 | 
| array/reductions/mapreduce/Int64/dims=2 | 1332479.5ns | 1287792ns | 1.03 | 
| array/reductions/mapreduce/Int64/dims=1L | 2197375ns | 2217750ns | 0.99 | 
| array/reductions/mapreduce/Int64/dims=2L | 3629500ns | 3605771ns | 1.01 | 
| array/reductions/mapreduce/Float32/1d | 829708ns | 804562.5ns | 1.03 | 
| array/reductions/mapreduce/Float32/dims=1 | 864667ns | 839750ns | 1.03 | 
| array/reductions/mapreduce/Float32/dims=2 | 766708ns | 750625ns | 1.02 | 
| array/reductions/mapreduce/Float32/dims=1L | 1886833ns | 1827146ns | 1.03 | 
| array/reductions/mapreduce/Float32/dims=2L | 1921958ns | 1906334ns | 1.01 | 
| array/private/copyto!/gpu_to_gpu | 536625ns | 585500ns | 0.92 | 
| array/private/copyto!/cpu_to_gpu | 767396ns | 762979ns | 1.01 | 
| array/private/copyto!/gpu_to_cpu | 707916ns | 716333ns | 0.99 | 
| array/private/iteration/findall/int | 1699417ns | 1641375ns | 1.04 | 
| array/private/iteration/findall/bool | 1548208ns | 1569250ns | 0.99 | 
| array/private/iteration/findfirst/int | 1828354.5ns | 1846916.5ns | 0.99 | 
| array/private/iteration/findfirst/bool | 1766458ns | 1736417ns | 1.02 | 
| array/private/iteration/scalar | 2808458ns | 3512729ns | 0.80 | 
| array/private/iteration/logical | 2831208ns | 2713125ns | 1.04 | 
| array/private/iteration/findmin/1d | 1789667ns | 1797333ns | 1.00 | 
| array/private/iteration/findmin/2d | 1555104.5ns | 1538604ns | 1.01 | 
| array/private/copy | 813416ns | 852167ns | 0.95 | 
| array/shared/copyto!/gpu_to_gpu | 85542ns | 79583ns | 1.07 | 
| array/shared/copyto!/cpu_to_gpu | 84041ns | 81125ns | 1.04 | 
| array/shared/copyto!/gpu_to_cpu | 84541ns | 80125ns | 1.06 | 
| array/shared/iteration/findall/int | 1689458ns | 1640084ns | 1.03 | 
| array/shared/iteration/findall/bool | 1577563ns | 1570958.5ns | 1.00 | 
| array/shared/iteration/findfirst/int | 1488854ns | 1480750ns | 1.01 | 
| array/shared/iteration/findfirst/bool | 1429125ns | 1411792ns | 1.01 | 
| array/shared/iteration/scalar | 169583ns | 158875ns | 1.07 | 
| array/shared/iteration/logical | 2452250ns | 2506750ns | 0.98 | 
| array/shared/iteration/findmin/1d | 1447875ns | 1439375ns | 1.01 | 
| array/shared/iteration/findmin/2d | 1564437ns | 1557645.5ns | 1.00 | 
| array/shared/copy | 212292ns | 214333ns | 0.99 | 
| array/permutedims/4d | 2619791ns | 2582042ns | 1.01 | 
| array/permutedims/2d | 1309042ns | 1282666.5ns | 1.02 | 
| array/permutedims/3d | 1974875ns | 1945146ns | 1.02 | 
| array/sorting/Int64/1d | 8146667ns | ||
| array/sorting/Float32/1d | 8105208ns | ||
| array/sorting/Float32/by=sin | 15878478.5ns | ||
| metal/synchronization/stream | 15917ns | 14792ns | 1.08 | 
| metal/synchronization/context | 16292ns | 15291ns | 1.07 | 
This comment was automatically generated by workflow using github-action-benchmark.
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment
  
      
  Add this suggestion to a batch that can be applied as a single commit.
  This suggestion is invalid because no changes were made to the code.
  Suggestions cannot be applied while the pull request is closed.
  Suggestions cannot be applied while viewing a subset of changes.
  Only one suggestion per line can be applied in a batch.
  Add this suggestion to a batch that can be applied as a single commit.
  Applying suggestions on deleted lines is not supported.
  You must change the existing code in this line in order to create a valid suggestion.
  Outdated suggestions cannot be applied.
  This suggestion has been applied or marked resolved.
  Suggestions cannot be applied from pending reviews.
  Suggestions cannot be applied on multi-line comments.
  Suggestions cannot be applied while the pull request is queued to merge.
  Suggestion cannot be applied right now. Please check back later.
  
    
  
    
No description provided.